The present invention relates generally to data storage systems, and more particularly, to an interface mechanism which allows host computing devices to interoperate with the data storage system.
The widespread use of computerized data processing systems has created vast amounts of data that must be stored. To serve this need, data storage system providers have developed data storage systems that use tape or disk arrays to store such data. In a typical data storage system using disk or tape array technology, there can be many individual physical storage devices, such as hard disk drives or tape drives. Circuitry and/or software in either the data storage system or in the host computing devices (hosts) which interface to the data storage system can manipulate the way in which data is stored in the various individual storage devices. Various arrangements of the storage devices and of the data maintained in each device are possible. Each arrangement generally allows the storage devices to appear as a single contiguous data repository or as groups of repositories to an application executing on a host that requires storage or access to stored data.
By way of example, a data storage technology such as Redundant Arrays of Inexpensive Disks (RAID) allows a data storage system to present conglomerations of many individual hard disk drives to host computing devices as one or more disk storage areas. In general, the data storage system handles the RAID operations in such a way that they are transparent to the host computing devices which interface to the data storage system. RAID systems also provide various levels of fault tolerance, error correction and error recovery. This allows the hosts to treat a conglomeration of disks within the RAID data storage system without regard to the underlying physical separation or layout of data within or xe2x80x9cacrossxe2x80x9d each individual disk drive. For more details concerning RAID technology and systems which implement this technology, the reader is referred to Patterson et al., xe2x80x9cA Case for Redundant Arrays of Inexpensive Disks (RAID),xe2x80x9d ACM SIGMOND Conference, Jun. 1-3, 1988, the teaching of which are hereby incorporated by reference in their entirety.
The conglomerations of disks presented as a single repository for data to a host computing device from a data storage system are called volumes. A prior art volume identifies and serves as a host interface to the raw physical storage associated with one or more storage devices within the data storage system. Typically, in the prior art, a person known as a systems administrator configures one or more volumes during an initial or periodic configuration process performed on the data storage system. Between configurations, the total amount of available data storage within a prior art volume does not change. For instance, an administrator may configure a data storage system containing four physically separate hard disk drives xe2x80x9cAxe2x80x9d, xe2x80x9cBxe2x80x9d, xe2x80x9cCxe2x80x9d and xe2x80x9cDxe2x80x9d to present only two volumes of data storage, V1 and V2, to a host computing device that interfaces to the data storage system. The first volume V1 may be a conglomeration of physical storage space (using RAID or another data-over-multiple-disk technology) located on disks xe2x80x9cAxe2x80x9d and xe2x80x9cBxe2x80x9d, while the second volume V2 may be a conglomeration of storage space existing within hard disk drives xe2x80x9cCxe2x80x9d and xe2x80x9cDxe2x80x9d.
A single volume need not be comprised of space from more than one storage device. For example, a volume might be comprised of only a portion of storage space from a single hard disk. In this case, the volume may be equivalent, for example, to a partition, slice or other apportionment of that hard disk.
In any event, prior art data storage systems provide volumes that are essentially interface mechanisms to a host computing device. Generally, in the prior art, a single host directly interfaces (i.e., via a SCSI bus or other connection mechanism) to the data storage system and xe2x80x9cservesxe2x80x9d the data from the data storage system onto a network for access by other hosts, which do not directly interface to the data storage system. The volumes appear to the server host as individual contiguous repositories for data. Within the data storage system, however, the volumes may actually span portions of one or more storage devices (e.g. disk drives, tape drives, and so forth). Providing volumes insulates server software applications and server host computing devices from the details of complicated data and disk storage mechanisms such as mirroring, error correction, striping and so on. From here on in this description, a host or host computing device generally refers to a host (i.e., a server) that directly interfaces with a data storage system.
Generally, when a host computing device starts-up or xe2x80x9cbootsxe2x80x9d, an operating system that controls the host polls any attached data storage systems via device drivers to determine what volumes are available for access to the host computing device within the data storage system. By way of example, a host executing a version of the Solaris operating system (a variant of Unix), which is manufactured by Sun Microsystems of Mountain View, Calif., (Solaris being a registered trademark of Sun Microsystems Inc.) can use an operating system call, such as xe2x80x9creport LUNSxe2x80x9d for a SCSI-3 device, to poll the SCSI port coupled to the data storage system in order to determine volume availability. In response to the host poll, the data storage system provides a list of available volumes in the given target device. Host-specific access information stored in the volumes may be reported back to the host as well.
A host filesystem in the host computing device can then access a particular volume by xe2x80x9cmountingxe2x80x9d a volume identifier associated with the volume (obtained from the initial poll) that is provided from the data storage system to a xe2x80x9cmount pointxe2x80x9d within the host filesystem. A filesystem mount point is essentially a stub directory within the host filesystem that serves as an entry point into the volume once the host has mounted the volume. After the host has mounted the volume, software applications on the host can access data in the volume by referencing the mount point directory and any subdirectories that are now available within the mounted volume of data storage. For example, in a computing device controlled by the Unix operating system, a mount point may correspond to a directory within the Unix filesystem, such as xe2x80x9c/homexe2x80x9d. A system command such as
mount /home /dev/dsk/c0t0d0s0
can be used to mount the volume identified by xe2x80x9c/dev/dsk/c0t0d0s0xe2x80x9d to the mount point xe2x80x9c/homexe2x80x9d in the Unix filesystem. After the volume is mounted, users or applications executing on the computing device can reference files and data within the /home directory and any subdirectories within /home that actually exist within the data storage associated with the volume. That is, all data accessed within the /home directory is physically maintained on storage space within storage devices (e.g., hard disk drives) that are associated with the mounted volume xe2x80x9c/dev/dsk/c0t0d0s0xe2x80x9d in the data storage system.
Most operating systems rely on volumes provided by a data storage system for certain operations. For example, many host operating systems expect storage space within volumes to be organized into sequential blocks of data ranging from Block 0 to Block N. Many operating systems frequently store certain host-specific volume directory information, partition information, track/sector layout and size information, and so forth on a predetermined designated portion of storage space within a volume. Block 0 (i.e. the first block) of a volume is frequently used for storing such host-specific data. As another example, the Microsoft Windows NT operating system, manufactured by Microsoft Corporation of Redmond, Wash. performs periodic checks to make sure that a mounted volume is always accessible within the data storage system. Windows and Windows NT are registered trademarks of Microsoft Corporation.
Generally, once an operating system of a host computing device mounts a prior art volume, the host and/or the data storage system cannot change the amount of available storage space (i.e. the size) within the volume while the volume remains mounted. Thus, if a host mounts a ten Gigabyte volume of data storage, the host operating system and any host software applications can have access to the full ten Gigabytes of data storage within that volume as a single contiguous portion of storage space. However, the amount of data that can be stored on such a volume is limited to ten Gigabytes, less any space used for volume formatting requirements, such as the Block 0 information. In order for more storage space to be associated with (i.e. added to) the volume, a systems administrator for the host must unmount the volume and reconfigure the volume size by associating additional storage devices to the volume within the data storage system. Once the systems administrator reconfigures the volume size, the systems administrator can again present the volume to the host operating system as available data storage space.
Reconfiguration of a volume (i.e., to add or remove or move data storage space) typically requires high-level systems administrator (e.g. xe2x80x9crootxe2x80x9d) privileges on the host computing device. For example, during volume reconfiguration, the host operating system must be brought into a special restricted user mode (e.g. single-user mode). The restricted user mode ensures that no host application programs are attempting to access data within the volume while reconfiguration is in progress. Once reconfigured, the host operating system may need to be re-started or xe2x80x9cre-bootedxe2x80x9d in order for the operating system to re-poll the attached data storage system to discover the newly re-configured volume(s) containing the additional storage space.
The access information stored by a host operating system in Block 0 of a volume is often specific to a particular operating system or host architecture. By way of example, if a version of the Solaris operating system is used to configure and mount a volume, Block 0 of that volume may contain Solaris-specific volume access information. If the data storage system that contains the Solaris-specific volume is subsequently interfaced with another host computing device that uses a different operating system or architecture, such as Microsoft Windows NT, the access information in Block 0 of the Solaris-specific volume may not be suitable to allow access to the volume by the Windows.NT controlled computing device. This is because volume labeling information provided by Solaris in Block 0 of the volume is not be compatible with volume labeling information required by Windows NT.
Certain software application programs that execute on host computing devices also rely on the existence and correct operation of volumes. For instance, a data storage application called TimeFinder, manufactured by EMC Corporation of Hopkinton, Mass. (TimeFinder is a trademark of EMC Corporation), allows a data storage system to create and continuously maintain a mirror image volume of a master volume. While the mirror image volume is continuously being maintained as a copy of the master volume (reflecting all changes made to data within the master volume), both the mirror image volume and the master volumes are xe2x80x9cvisiblexe2x80x9d to the host operating system that is interfaced to the data storage system. From time to time, the TimeFinder software can detach the mirror image volume from its synchronous relationship with the master volume. TimeFinder may detach the mirror image volume from the master volume, for example, to allow the mirror image volume to be used for offline application testing or periodic backup purposes on dedicated backup host. This allows the master volume to remain accessible the regular host computing devices thus providing uninterrupted access to data in the master volume. Such a system is valuable in mission critical systems requiring around-the-clock access to data. When the offline operations (i.e., backup or testing) on the mirror image volume are complete, TimeFinder reinstates the synchronous relationship between the mirror image volume and the master volume so that the mirror image volume can be brought back up-to-date with the master volume to reflect any changes that may have occurred in the master volume during the backup of testing processing.
As another example of the reliance on volumes for the proper operation of host software applications, certain host application programs may require a minimum amount of storage space to be available within a volume before allowing processing within the application to proceed. This may be the case, for example, when a database program attempts to initially access a volume of storage to create a new database. The database application may have minimum storage size requirements with respect to the volume in order to allow processing to proceed beyond a certain point.
Prior art data storage systems that use conventional techniques to create, maintain and manage volumes of data storage within a data storage system suffer from a number of deficiencies. Embodiments of the present invention are based, in part, on the recognition of these deficiencies and provide solutions to overcome them. The techniques of the invention also go beyond solving problems of prior art systems and provide unique mechanisms related to volumes within data storage systems that provide significant advancements in the state-of-the art.
Prior art data storage systems provide volume interfaces which are static in configuration. Once a volume is configured, its association to specific storage devices within the data storage system cannot change unless the volume is reconfigured. As noted above, reconfiguration must be performed while the prior art volume is in an offline state with respect to host computing devices. Moreover, a systems administrator must reboot the operating systems on most host computing devices that require access to a newly configured volume, which results in significant overhead and lost processing time.
Prior art volumes provided by conventional data storage systems are also static in storage size. The storage size or total amount of data storage capacity within a prior art volume is directly dependant upon how much storage space is present within the storage devices (or portions thereof) that are associated with the prior art volume at volume configuration time. The concepts of storage size and actual storage space associated with a prior art volume are essentially one in the same in prior art data storage systems. That is, the process of associating storage devices to the volume during volume configuration inherently determines the storage size of a volume based upon the actual amount of storage space associated with the volume. The storage size of a volume cannot be configured separately or changed independently of the associated storage space. For example, one generally cannot separately associate some storage devices to a volume and then arbitrarily select a size for that volume which is different that the actual amount of space within the associated storage devices. Thus, the storage size of a volume as seen by a host is the actual amount of storage space provided by that volume. Also, prior art volumes cannot exist in a data storage system without some minimum amount of storage space associated with the volume. In other words, prior art volumes with a size of zero cannot exist in a conventional data storage system.
Another deficiency of conventional data storage systems is that these systems do not provide adequate support for multiple hosts to access the same volume in many circumstances. For example, two different hosts architectures that use different operating systems that try, for example, to directly connect to the same data storage system and mount the same volume of data storage can frequently experience problems due to incompatibilities between host-specific access information, such as that stored in Block 0, as required by each host. Since each different operating system attempts to maintain its own host-specific access information in Block 0 of the volume, the two disjoint host architectures can experience difficulties when each attempts to decipher the host-specific access information created by the other host.
Due to the aforementioned examples of deficiencies with prior art data storage systems, certain other problems may be encountered when host computing device software applications and operating systems attempt to interact with prior art volumes in various circumstances. For instance, data storage applications that create and continuously maintain a mirror image volume of a master volume can experience problems when the mirror image volume is taken xe2x80x9coff-linexe2x80x9d for backup or testing purposes. This is frequently the case, for example, when using the Windows NT operating system on a host. Certain mechanisms within Windows NT periodically attempt to access or xe2x80x9ctouchxe2x80x9d all volumes that are xe2x80x9cvisiblexe2x80x9d or that are known to exist to Windows NT. When using the mirroring application, the mirror image volume can be periodically become xe2x80x9cvisiblexe2x80x9d and xe2x80x9cinvisiblexe2x80x9d to the host as the mirror image volume is taken offline for backup or testing purposes. When this occurs, Windows NT may experience a fault since the volume is no longer visible to the operating system when the operating system performs its periodic volume access or touch. If a fault does not occur when the mirroring application removes the volume from the host, when the operating systems performs a subsequent periodic access or touch, the operating system may reset the number of xe2x80x9cvisiblexe2x80x9d volumes that are apparent to Windows NT. However, when the mirroring application subsequently reattaches the mirror image volume to the host in order to re-synchronize data with the master volume, the appearance of the unknown mirror image volume (without rebooting Windows NT) may cause Windows NT to experience difficulties.
Other problems are presented when prior art volumes are used with software applications as well. For example, certain software applications have requirements for certain minimum volumes sizes in order to operate properly. These applications may encounter difficulties if a prior art volume is pre-configured to a static size that becomes too small for future use. In a database application, for example, if a systems administrator configures a prior art volume with ten gigabytes of storage device space, and the database application later requires fifteen gigabytes within the volume, the systems administrator must reconfigure the ten gigabyte volume to contain more associated storage. Not only is volume reconfiguration cumbersome for the reasons noted above, but the systems administrator must purchase or otherwise obtain the additional five gigabytes of storage device space.
Many of the problems experienced by applications and operating systems that interact with prior art data storage systems and volumes stem in part from the fact that prior art volumes only exist when the configuration process allocates storage device space to the volume. That is, a prior art volume is essentially equivalent to, and unattachable from, the storage space associated with the volume. Thus, in the above example of the mirroring application, if the mirror volume""s storage is required elsewhere (e.g. for use in testing on another host system), when the mirroring application removes the mirror image volume from the master host system making it no longer xe2x80x9cvisiblexe2x80x9d from the perception of the master host operating system, the master host operating system may crash.
The present invention provides an alternative to prior art data storage systems and volume creation and management techniques and solves many of the deficiencies found in such systems. To do so, the present invention specifically provides a system and method within a data storage system that provide an interface to a data storage system. The interface of the invention is called a volume in this description. To provide the interface, the system defines a volume within the data storage system. The volume can have an associated identifier. The system creates the volume when there are storage devices associated with the volume, and when there are no storage devices associated with the volume. The system provides the volume as a volume of available data storage to a computing device which is external to the data storage system. The volume of storage is accessible with the associated identifier. In accordance with the invention, since the volume can exist in the data storage system even if no storage devices (i.e., storage space) are associated with the volume, hosts that interface to the data storage system that require the mere existence of a volume can operate effectively.
To define the volume, the system of the invention identifies a number of storage devices and associates the identified number of storage devices with the volume. The system also selects a storage size for the volume. These two steps are preferably performed independent of each other. That is, selecting a storage size for the volume can be done independent of the identified number of storage devices associated with the volume. Alternatively, the selected storage size may be dependent on an amount of data storage associated with the identified number of storage devices associated with the volume. In yet another alternative configuration, however, the selected storage size for the volume may be independent of any storage devices associated with the volume. In yet another configuration, the selected storage size for the volume may be dependent but different from of an amount of data storage associated with storage devices associated with the volume. In this manner, the volumes provided by the invention can be perceived by the hosts as having one size, when in reality, they have a different amount of actual associated storage space within the data storage system.
A configuration is provided in which there are no storage devices associated with the volume and the volume indicates a storage size that is greater than zero. Another configuration is provided in which there are no storage devices associated with the volume and the volume indicates a storage size that is zero. As will be explained, these configurations overcome may of the problems associated with prior art systems.
In accordance with another configuration of the invention, the associated identifier of the volume is a persistent identification and the system provides the volume as a volume of available data storage and provides access to the volume to a plurality of networked computing devices, each of which perceives the volume with the persistent identification.
The system of the invention also provides a dynamic volume reconfiguration process which detects a requirement for a storage device to be associated with a volume in the data storage system. The system can then determine if the volume contains an association to an identity of the storage device, and if not, the system can dynamically create, in the volume, an association to the identity of the storage device thus causing the storage device to be accessible via the volume. The system then provides access to the storage device through the volume. This allows storage space to be added to the volume when needed. For instance, in another configuration, when the system detects a requirement for a storage device, this process is initiated by an attempted access to a requested storage device understood by a computing device to be associated with the volume. Thus, as hosts access volumes of this invention, space can be dynamically added to the volumes on an as-needed basis.
Alternatively, the process of detecting a requirement for a storage device in a volume may be initiated by detecting a presence of a threshold amount of occupied storage associated with the volume. In another alternative configuration, process of detecting a requirement for a storage device is initiated by detecting a trend in an amount of storage use associated with the volume.
The dynamic reconfiguration process can also remove storage space from a volume. To do so, embodiments of the invention can detect a requirement, for a non-required storage device that has an existing association with the volume, to no longer be associated with the volume in the data storage system. The system can dynamically remove, from the volume, the association to the identity of the non-required storage device in the data storage system, thus de-allocating the non-required storage device from the volume while continually providing the volume as a volume of available data storage in the data storage device. This allows the de-allocated storage space to be used for other purposes, such as backup or testing.
In accordance with one embodiment, the process of dynamically removing maintains a storage size associated with the volume that is the same before and after removal of the association of the identity of the non-required storage device from the volume.
Another embodiment of the invention provides a systems that allows access to data by multiple computing devices through a volume in a data storage system. The system can receive an access request to the volume by a computing device and can retrieve access information within the volume that is specific to the computing device requesting access to the volume. Then, the system can provide, to the computing device, the access information to allow the computing device to properly access the volume. This allows multiple hosts to access the volume, even though each may have different access information.
In a more particular configuration, the system determines if the volume contains volume information that is different from volume information contained within the access information, and if so, replaces, within the access information, the volume information that is different with the volume information from the volume. This allows the volumes provided by a data storage system in accordance with the invention to provide consistent volume information to a host computing device, even if the host computing device attempts to use information within its host-specific access information to determine volume characteristics.
As an example, in one configuration, if the volume information that is different is storage size information in the volume to which access is requested, the storage size information contained within the access information provided to the computing device is storage size information obtained from the volume instead of actual storage size information related to storage devices associated with the volume.
In other embodiments of the invention, wherein the computing devices may operate using different architectures, the process of retrieving access information determines an identity of the computing device attempting to access the volume and retrieves architecture specific access information for the volume for that computing device from the volume based on the identity of the computing device. In a variation of this configuration, the different architectures can be different operating systems which execute on the computing devices. In this case, the system of the invention provides to the computing device the architecture specific access information including operating system block organization information relating to how the operating system of the computing device stores blocks of data in storage devices associated with the volume. In these embodiments, the access information may be specific for each of the plurality of computing devices.
Other embodiments of the invention provide a data storage system that includes a host interface capable of coupling to at least one computing device. Also included is a storage device interface capable of coupling to one or more storage devices maintained within the data storage system. A memory is coupled to the host interface and the storage device interface. The memory contains a volume which can have an associated identifier. The volume exists in the memory as an accessible volume for access by computing devices via the host interface. The volume exists when there are storage devices associated with the volume, and when there are no storage devices associated with the volume. As explained above, this aspect of the invention allows volume to exist which may use little or no storage in the data storage system.
The volume in the memory may include storage size indicating an available amount of data storage associated with the volume. The storage size can contain a value that is programmable and is dependant, but different than a size of any storage devices associated with the volume via the storage device interface.
The data storage system can also include at least one storage device coupled to the storage device interface. In this configuration, the storage device can have a portion associated with the volume. The portion can have an actual size and the volume in the memory includes a storage size indicating an available amount of data storage associated with the volume. The storage size may contain a value that is not equal to the actual size of the portion of the at least one storage device associated with the volume. In this manner, the actual amount of storage space associated with the volume is not that same as that indicated by the storage size of the volume presented to host computing devices.
Also in the data storage system in this invention, the associated identifier of the volume may be a persistent identification containing a value unique to the volume. In this case, the host interface includes a means for providing the volume as a volume of available data storage to a plurality of networked computing devices. Each of the networked computing devices perceives the volume with the persistent identification that is the same. This configuration allows the data storage system to be accessed by separate hosts using identifiers that are the same for the same volumes.
The data storage system also contains a means for detecting a requirement for a required storage device to be associated with the volume in the data storage system and a means for determining if the volume contains an association to an identity of the required storage device through the storage device interface. If no association is present, a means is provided for dynamically creating, in the volume, an association to the identity of the required storage device through the storage device interface, thus causing the required storage device to be allocated to the volume. Also, a means is provided for providing access to the required storage device through the volume using the host interface.
Also in this configuration, the data storage system can further include a means for detecting a requirement, of a non-required storage device that has an existing association with the volume through the storage device interface, to no longer be associated with the volume in the data storage system. Further provided in this configuration is a means for dynamically removing, from the volume, the association to the identity of the non-required storage device through the storage device interface in the data storage system, thus de-allocating the non-required storage device from the volume while the volume continually appears, via the host interface, as a volume of available data storage having an unchanging storage size in the data storage system. This configuration allows storage space to be added and removed as needed to and from the volume without disturbing host interaction with the volume.
In another configuration of the data storage system, the memory is coupled to the host interface and the storage device interface and the memory contains a volume. The volume contains a plurality of sets of access information allowing a plurality of specific computing devices to access data stored on the at least one storage device according to the a particular arrangement associated to each of the plurality of computing devices. Also provided is a means for storing access information for at least one storage device. The access information is specific for each of a plurality of computing devices that can access the at least one storage device. This configuration allows different host operating systems to directly interface and simultaneously access the same volume, since the access information required for each host is maintained for each storage device within the volume.
A specific computing device can interface, for example, via the host interface, with the data storage system. A label manager is provided in this configuration and is coupled to the host interface and to the memory. The label manager receives, via the host interface, an access request from the specific computing device to the volume in the memory. The label manager can retrieve one of the sets of access information within the volume that is associated with the specific computing device requesting access to the volume and can provide, to the specific computing device, the retrieved set of access information to allow the specific computing device to properly access the volume.
Also included in this label manager configuration is a means for determining if the volume contains volume information that is different from volume information contained within the retrieved set of access information, and if so, a means is provided for replacing, within the retrieved set of access information that is provided to the specific computing device, the volume information that is different with the volume information from the volume. This allows the volumes provided by the invention to present consistent information to host computing devices, even if those hosts have their own information relating to volume parameters that might be different than that maintained within the volume in the data storage system.
For instance, in one configuration, the storage size information contained within the set of access information provided to the specific computing device is storage size information obtained from the volume, instead of actual storage size information related to storage devices associated with the volume.
The different access information is provided to accommodate different host operating systems and architectures that require access to the same volume. As such, a configuration of the invention is provided that includes a means for determining an identity of the specific computing device attempting to access the volume. Also, a means is provided for retrieving, from the volume, architecture specific access information associated with a storage device having an association with the volume for that specific computing device based on the identity of the specific computing device. More specifically, if the different architectures are different operating systems, the label manager further comprises a means for providing, to the specific computing device, the architecture specific access information which can include operating system block organization information relating to how an operating system of the specific computing device stores blocks of data associated with the storage device having an association with the volume for that specific computing device.
The data storage system can also include a means for determining if the volume to which access is requested contains an association to an identity of a required storage device that is associated with the access information provided to the specific computing device, and if not, can dynamically create, in the volume to which access is requested, an association to the identity of the required storage device thus causing the required storage device to be allocated to the volume. The above means are preferably provided by a programmed microprocessor within the data storage system and the volumes of the invention are preferably maintained in a channel director.
In another embodiment of the invention, a method provides a volume interface to a data storage system. The method includes the steps of receiving a request from a computing device for a volume in the data storage system and providing, from the data storage system to the computing device, in response to the request, a volume that satisfies the request when there are storage devices associated with the volume, and when there are no storage devices associated with the volume.
Embodiments of the invention are also provided that consist of computer programs encoded onto computer readable mediums, such as memory devices, disks, and so forth. Preferably, these embodiments are in the form of a computer program product having a computer-readable medium including computer program logic encoded thereon. The computer program code allows a data storage system to provide an interface to the data storage system as explained herein, when the computer program logic is executed on at least one processing unit with the data storage system. The computer program product is preferably a hard disk, floppy disk, optical or CD-ROM disk, or other computer-readable media. Such a disk encoded with instructions that perform any of the methods of the invention as explained herein is itself considered an embodiment of the invention.
Thus, a computer readable medium such as a disk or Read Only Memory (ROM) or Random Access Memory (RAM) chip, that is separate from a data storage system, but that is encoded with computer program instructions, that, if compiled and executed, or just executed on processor within a data storage system, would cause the data storage system to create, maintain, and manipulate the volumes of the invention, and/or would otherwise operate using the inventive techniques described herein, is to be understood to be an article of manufacture and is considered an embodiment of this invention. The disk, memory, or medium need not be loaded or installed on any data storage system, processor, host or other computing device, but may simply exist alone as contain the encoded computer software code that provides the aforementioned operations. The software to carry out these instruction may be written in any type of computer code, including such languages as C, C++, Java, assembly language, or a proprietary language, and so forth, or may exist as complied object code ready for execution by a processor.
An example embodiment of a data storage system configured according to the invention is any one of the Symmetrix data storage systems manufactured by EMC Corporation of Hopkinton, Mass. Symmetrix is a registered trademark of EMC Corporation.